#ifndef LHC_UTF_16_H_INCLUDED_
#define LHC_UTF_16_H_INCLUDED_

#include <QtCore/qstring.h>
#include <boost/cstdint.hpp>

namespace lhcutils
{

class UnicodeString;

class Utf16Array
{
	friend class UnicodeString;

private:
	QString m_qStringToKeepAlive;

	explicit Utf16Array(QString str);

public:
	const boost::uint16_t* CodePointPtr() const;

#ifdef _WIN32
	const wchar_t* WcharPtr() const;
#endif

	const boost::uint8_t* BytePtr() const;

	// Does not count the null terminator if created as a null terminated byte array
	std::size_t CodePointCount() const;
	std::size_t ByteCount() const;

	// default copy functions are ok
};

}

#endif

/*
 Copyright 2011 Greg Najda

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
*/
